package com.yonyou.gmmc.service.pointactivity.dao;


import java.util.List;
import java.util.Map;

import com.yonyou.gmmc.common.annotation.OracleDb;
import com.yonyou.gmmc.service.pointactivity.model.TmReturnFactory;
import com.yonyou.gmmc.service.pointactivity.model.TmSweepstake;
import com.yonyou.gmmc.service.pointactivity.model.TtOwnerLottery;

import tk.mybatis.mapper.common.Mapper;

@OracleDb
public interface TtOwnerLotteryMapper extends Mapper<TtOwnerLottery> {

	/**
	 * 根据openId查询客户参加活动所在省份
	 * @param openId
	 * @return 客户所在省份
	 */
	public String getUserProvinceByOpenId(String openId);
	
	/**
	 * 获得对应省份奖券
	 * @param province
	 * @return 对应省份未抽取的奖券数
	 */
	public List<TmSweepstake> getLotteryByProvince(String province);
	
	/**
	 * 修改奖券状态为已抽取
	 * @param key
	 */
	public void updateTtSweepstakeByKey(String key);

	/**
	 * 查询A部分奖券占比
	 * @return 返回A部分奖券占比
	 */
	public List<TmReturnFactory> getPartAProportion();
	
	/**
	 * 查询B部分奖券占比
	 * @return 返回B部分奖券占比
	 */
	public List<TmReturnFactory> getPartBProportion();

	/**
	 * 查询B部分奖券数
	 * @return B部分未抽取奖券数
	 */
	public int countBLottery(); 
	
	/**
	 * 删除B部分奖券 逻辑删除
	 */
	public void deleteBLottery();

	/**
	 * 删除A部分奖券  逻辑删除
	 */ 
	public void deleteALottery();

	/**
	 * 最后两三天奖券地点自定义为 “不限”
	 */
	public void updateLotteryProvince();

	/**
	 * 查询未抽取奖券
	 * @return 未抽取奖券结果集
	 */
	public List<TmSweepstake> getLottery();
	
	/**
	 * 查询未抽取奖券 for update
	 * @return 未抽取奖券结果集
	 */
	public List<TmSweepstake> getLotterys();
	
	/**
	 * 根据openId查询客户对应的奖券信息
	 * @param openId
	 * @return
	 */
	public TmSweepstake getLotter(Map<String,Object> param);

	/**
	 * 查询个人抽奖纪录
	 * @param openId
	 * @param vin 
	 * @return 抽奖纪录
	 */
	public Map<String, Object> queryTtOwnerLotteryByOpenId(Map<String,Object> param);
	
	/**
	 * 查询已中奖总数
	 * @return 已中奖总数
	 */
	public int countTtOwnerLottery();

	/**
	 * 查询总中奖率
	 * @return 总中奖率
	 */
	public int getTotalProbability();

	/**
	 * 查询个人中奖率
	 * @return 个人中奖率
	 */
	public int getPersonnalProbability();

	/**
	 * 查询总占比（已中奖/总奖券数）
	 * @return
	 */
	public double getTotalProportion();

	/**
	 * 查询低个人中奖率
	 * @return
	 */
	public int getLowPersonnalProbability();
	
	/**
	 * 根据openId修改预约状态
	 */
	public void reservationStatusUpdate(String openId);

	/**
	 * 查询抽奖时间 
	 * @return
	 */
	public String getDrawEndTime();

	/**
	 * 根据openId查询车架号
	 * @param openId
	 * @return
	 */
	public String getVinByOpenId(String openId);

}
